import pandas as pd
import os

# --------------------------
# 用户配置部分（请根据实际情况修改）
# --------------------------

# 基础信息文件路径
base_info_path = r'C:\Users\admin\Desktop\5.6语言处理\第二次处理\基础信息.xlsx'

# 翻译文件所在目录
translation_dir = r'C:\Users\admin\Desktop\5.6语言处理\第二次处理\翻译文件'

# 输出路径
output_dir = r'C:\Users\admin\Desktop\5.6语言处理\合并完成目录'
output_file = os.path.join(output_dir, 'APP多语言翻译.xlsx')

# 需要合并的语言列表（必须和第一步拆分时一致）
languages = [
    '意大利语', '法语', '日语', '德语', '西班牙语',
    '俄语', '葡萄牙语', '阿拉伯语', '繁体', '简体'
]

# 原始表格列顺序（用于最后输出时保持一致）
original_order = [
    '模块', '功能-页面', '图片', '中文', '说明', '标识',
    '英语', '意大利语', '法语', '日语', '德语',
    '西班牙语', '俄语', '葡萄牙语', '阿拉伯语', '繁体', '简体',
    '平台', '状态', '最后编辑日期', '语言', '备注'
]

# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)

# --------------------------
# 1. 读取基础信息表
# --------------------------

base_df = pd.read_excel(base_info_path)

# --------------------------
# 2. 逐个读取语言翻译文件，并提取“修改后”列
# --------------------------

for lang in languages:
    file_path = os.path.join(translation_dir, f'{lang}.xlsx')
    
    if not os.path.exists(file_path):
        print(f"⚠️ 文件不存在: {file_path}，跳过该语言")
        continue

    # 读取翻译文件
    lang_df = pd.read_excel(file_path)

    # 检查是否有“修改后”列
    modified_col = f'{lang}-修改后'
    if modified_col not in lang_df.columns:
        print(f"⚠️ 文件 {file_path} 缺少 '{modified_col}' 列，跳过该语言")
        continue

    # 只保留 id 和 修改后列
    lang_merge_df = lang_df[['id', modified_col]]

    # 合并进基础信息表
    base_df = pd.merge(base_df, lang_merge_df, on='id', how='left')

    # 将合并后的列重命名为语言名（去掉 "-修改后"）
    base_df.rename(columns={modified_col: lang}, inplace=True)

    print(f"✅ 已合并语言: {lang}")

# --------------------------
# 3. 按原始列顺序重新排列列
# --------------------------

# 添加缺失的语言列（如果某些语言文件缺失，手动补空列）
for col in original_order:
    if col not in base_df.columns:
        base_df[col] = ''

# 重新排序
final_df = base_df[original_order]

# --------------------------
# 4. 输出最终文件
# --------------------------

final_df.to_excel(output_file, index=False)
print(f"🎉 合并完成！最终文件已保存至: {output_file}")